package licode.unisop.provider.api;

import licode.unisop.provider.info.AssetPageInfo;
import licode.unisop.provider.info.SiAssetIdPage;
import licode.unisop.provider.info.SiRemoveRelAsset;
import licode.unisop.provider.vo.SiAssetBrief;
import licode.unisop.provider.vo.SiAssetKey;
import licode.unisop.provider.vo.SiPageResult;

/**
 * 定义平台用户信息实现接口
 *
 * @author licode
 */
public interface SiPlatformUserProvider {
    /**
     * 平台数据提供者名称（唯一）
     * @return 名称
     */
    String getName();

    /**
     * 保存用户资源
     * @param assetBrief 用户资源
     * @return 无
     */
    void saveUserAsset(SiAssetBrief assetBrief);

    /**
     * 移除关联资源
     * @param delInfo 删除消息
     */
    void removeRelAsset(SiRemoveRelAsset delInfo);

    /**
     * 分页查找用户信息
     * @param req 查找条件
     * @return 用户信息
     */
    SiPageResult<SiAssetBrief> findAssetPage(AssetPageInfo req);

    /**
     * 找到资源关联的所有资源信息
     * @param idInfo 资源查询条件
     * @return 关联资源
     */
    SiPageResult<SiAssetKey> findAssetKeysPage(SiAssetIdPage idInfo);
}
